package com.shioirikukuri.config;

import com.shioirikukuri.redis.TableAvailabilityPreloadService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

/**
 * 该类用于在 Spring Boot 应用启动时自动执行某些初始化任务。
 * 它实现了 CommandLineRunner 接口，Spring 会在所有 Bean 初始化完成后调用 run 方法。
 */
@Component
public class StartupRunner implements CommandLineRunner {

	// 注入 TableAvailabilityPreloadService 服务，用于处理 Redis 数据预加载逻辑
	private final TableAvailabilityPreloadService tableAvailabilityPreloadService;

	/**
	 * 构造函数注入依赖
	 * @param tableAvailabilityPreloadService 桌位可用性数据预加载服务
	 */
	public StartupRunner(TableAvailabilityPreloadService tableAvailabilityPreloadService) {
		this.tableAvailabilityPreloadService = tableAvailabilityPreloadService;
	}

	/**
	 * 应用启动后自动执行的方法
	 * 预加载未来 15 天的桌位信息到 Redis 中
	 *
	 * @param args 命令行参数（未使用）
	 * @throws Exception 如果发生异常
	 */
	@Override
	public void run(String... args) throws Exception {
		System.out.println("【系统启动】正在预加载未来 15 天的桌位数据到 Redis...");
		tableAvailabilityPreloadService.preloadTableData(15);
		System.out.println("【系统启动】桌位数据预加载完成。");
	}
}